#include <assert.h>
#include <stdlib.h>

#include "function.h"

// void * {

int functionVoidEqualTo(const void * l, const void * r) {
	return l == r;
}

int functionVoidLessThan(const void * l, const void * r) {
	return l < r;
}

// }

// int {

int functionIntEqualTo(const void * l, const void * r) {
	assert(l != NULL && r != NULL);

	return *(int *)l == *(int *)r;
}

int functionIntLessThan(const void * l, const void * r) {
	assert(l != NULL && r != NULL);

	return *(int *)l < *(int *)r;
}

void functionIntOnErased(void * data) {
	free(data);
}

// }

// unsigned int {

int functionUIntEqualTo(const void * l, const void * r) {
	assert(l != NULL && r != NULL);

	return *(unsigned int *)l == *(unsigned int *)r;
}

int functionUIntLessThan(const void * l, const void * r) {
	assert(l != NULL && r != NULL);

	return *(unsigned int *)l < *(unsigned int *)r;
}

void functionUIntOnErased(void * data) {
	free(data);
}

// }
